Merge branch 'master' of git://repo.or.cz/mqlkit
[mqlkit.git] / indicators / Price Channel.mq4
blobcb3d8e5c6af8e12f4e919e70b94264d74f21d70f
1 //+------------------------------------------------------------------+\r
2 //|                                                Price Channel.mq4 |\r
3 //|                                                                  |\r
4 //|                                       http://forex.kbpauk.ru/    |\r
5 //+------------------------------------------------------------------+\r
6  \r
7 #property link      "http://forex.kbpauk.ru/"\r
8 //---- îòðèñîâêà èíäèêàòîðà â ãëàâíîì îêíå\r
9 #property indicator_chart_window \r
10 //---- êîëè÷åñòâî èíäèêàòîðíûõ áóôôåðîâ\r
11 #property indicator_buffers 3\r
12 //---- öâåò èíäèêàòîðà\r
13 #property indicator_color1 Lime\r
14 #property indicator_color2 Blue\r
15 #property indicator_color3 Red\r
16 //---- ñòèëü ëèíèé Bollinger Bands\r
17 #property indicator_style1 4\r
18 #property indicator_style2 2\r
19 #property indicator_style3 4\r
20 //---- input parameters\r
21 extern int ChannelPeriod=14;\r
22 //---- buffers\r
23 double UpBuffer[];\r
24 double DnBuffer[];\r
25 double MdBuffer[];\r
26 //+------------------------------------------------------------------+\r
27 //| Custom indicator initialization function                         |\r
28 //+------------------------------------------------------------------+\r
29 int init()\r
30   {\r
31    string short_name;\r
32 //---- indicator line\r
33    SetIndexStyle(0,DRAW_LINE);\r
34    SetIndexStyle(1,DRAW_LINE);\r
35    SetIndexStyle(2,DRAW_LINE);\r
36 //----   \r
37    SetIndexBuffer(0,UpBuffer);\r
38    SetIndexBuffer(1,MdBuffer);\r
39    SetIndexBuffer(2,DnBuffer);\r
40 //---- name for DataWindow and indicator subwindow label\r
41    short_name="Price Channel("+ChannelPeriod+")";\r
42    IndicatorShortName(short_name);\r
43    SetIndexLabel(0,"Up Channel");\r
44    SetIndexLabel(1,"Middle Channel");\r
45    SetIndexLabel(2,"Down Channel");\r
46 //----\r
47    SetIndexDrawBegin(0,ChannelPeriod);\r
48    SetIndexDrawBegin(1,ChannelPeriod);\r
49    SetIndexDrawBegin(2,ChannelPeriod);\r
50 //----\r
51    return(0);\r
52   }\r
53 //+------------------------------------------------------------------+\r
54 //| Price Channel                                                    |\r
55 //+------------------------------------------------------------------+\r
56 int start()\r
57   {\r
58 //---- áëîêèðîâàíèå ïåðåñ÷¸òà âñåõ ïîäñ÷èòàííûõ è îòðèñîâàííûõ áàðîâ ïðè ïîäêëþ÷åíèè ê èíòåðíåòó\r
59 int ii,kk,counted_bars=INDICATOR_COUNTED(0); INDICATOR_COUNTED(1);\r
60 //---- ïðîâåðêà íà âîçìîæíûå îøèáêè\r
61 if (counted_bars<0){INDICATOR_COUNTED(-1);return(-1);}\r
62 //---- ïîñëåäíèé ïîäñ÷èòàííûé áàð äîëæåí áûòü ïåðåñ÷èòàí (áåç ýòîãî ïåðåñ÷¸òà äëÿ counted_bars ôóíêöèÿ JurXSeries áóäåò ðàáîòàòü íåêîððåêòíî!!!)\r
63 if (counted_bars>0) counted_bars--;\r
64  \r
65    double high,low,price;\r
66 //----\r
67    if(Bars<=ChannelPeriod) return(0);\r
68 //---- initial zero\r
69    if(counted_bars<1)for(ii=1;ii<=ChannelPeriod;ii++) UpBuffer[Bars-ii]=0.0;\r
70 //---- îïðåäåëåíèå íîìåðà ñàìîãî ñòàðîãî áàðà, íà÷èíàÿ ñ êîòîðîãî áóäåò ïðîèçåä¸í ïåðåñ÷¸ò íîâûõ áàðîâ\r
71    ii=Bars-ChannelPeriod-1;\r
72    if(counted_bars>=ChannelPeriod) ii=Bars-counted_bars-1;\r
73    while(ii>=0)\r
74      {\r
75        high=High[ii]; low=Low[ii]; kk=ii-1+ChannelPeriod;\r
76       while(kk>=ii)\r
77         {\r
78          price=High[kk];\r
79          if(high<price) high=price;\r
80          price=Low[kk];\r
81          if(low>price)  low=price;\r
82          kk--;\r
83         } \r
84      UpBuffer[ii]=high;\r
85      DnBuffer[ii]=low;\r
86      MdBuffer[ii]=(high+low)/2;\r
87       ii--;\r
88      }\r
89    return(0);\r
90   }\r
91 //+---------------------------------------------------------------------------------------------------------------------------+\r
92 //----+ Ââåäåíèå ôóíêöèè INDICATOR_COUNTED (ôàéë INDICATOR_COUNTED.mqh ñëåäóåò ïîëîæèòü â ïàïêó (äèðåêòîðèþ): MetaTrader\experts\include)\r
93 #include <INDICATOR_COUNTED.mqh> \r
94 //+---------------------------------------------------------------------------------------------------------------------------+